using System;
using System.Collections.Generic;
using System.Text;
using BussinessLogicTecnoPez.Produccion.Producto;
using BussinessLogicTecnoPez.Produccion.Compras;
using BussinessLogicTecnoPez.Produccion.FaenamientoEnvasado;

namespace BussinessLogicTecnoPez.AtencionCliente.Pedido
{
    [Serializable]
    [DBTable("DETALLEPEDIDO")]
    public class ItemDetallePedido : EntityBase<ItemDetallePedido>
    {
        private int id;
        private Producto objProducto;
        private decimal cantidad;
        private decimal precio;
        private bool armado;
        private LoteDeFaenamiento objLote;
        private decimal cantidadArmada;

        public ItemDetallePedido()
        {
            this.objProducto = null;
            this.cantidad = 0;
            this.precio = 0;
            this.armado = false;
            this.objLote = null;
        }

        public ItemDetallePedido(Producto objProducto, decimal cantidad, decimal precio, bool armado, LoteDeFaenamiento objLoteFaenamiento)
        {
            this.objProducto = objProducto;
            this.cantidad = cantidad;
            this.precio = precio;
            this.armado = armado;
            this.objLote = objLoteFaenamiento;
        }

        [FriendlyName("ID", false)]
        [DBField("ID", true, true)]
        public int ID
        {
            get { return id; }
            set { id = value; }
        }

        [FriendlyName("Producto", true)]
        [DBField("IDPRODUCTO", true, false, true, "IDPRODUCTO")]
        public Producto Producto
        {
            get { return objProducto; }
            set { objProducto = value; }
        }

        /// <summary>
        /// Utilizada para el manejo de la grilla
        /// </summary>
        [FriendlyName("IdProducto", false)]
        public int IdProducto
        {
            get
            {
                if (this.Producto != null)
                    return this.Producto.IdProducto;
                else
                    return 0;
            }
        }

        [FriendlyName("Cantidad", true)]
        [DBField("CANTIDAD", false, false)]
        public decimal Cantidad
        {
            get { return cantidad; }
            set { cantidad = value; }
        }

        [FriendlyName("Precio", true)]
        [DBField("PRECIO", false, false)]
        public decimal Precio
        {
            get { return precio; }
            set { precio = value; }
        }

        [FriendlyName("Armado", false)]
        [DBField("ARMADO", false, false)]
        public bool Armado
        {
            get { return armado; }
            set { armado = value; }
        }

        [FriendlyName("Cantidad Armada", true)]
        public decimal CantidadArmada
        {
            get { return cantidadArmada; }
            set { cantidadArmada = value; }
        }

        [FriendlyName("Lote Ova", true)]
        [DBField("IDLOTE", true, false, true, "IDLOTEFAENAMIENTO")]
        public LoteDeFaenamiento LoteFaenamiento
        {
            get { return objLote; }
            set { objLote = value; }
        }
    }
}
